xend: enable environment passing in xPopen3
authorOlaf Hering <olaf@aepfle.de>
Fri, 23 Nov 2012 11:06:15 +0000 (11:06 +0000)
committerOlaf Hering <olaf@aepfle.de>
Fri, 23 Nov 2012 11:06:15 +0000 (11:06 +0000)
In changeset 19990:38dd208e1d95 a new parameter 'env' was added to
xPopen3, but no code was added to actually pass the environment down to
execvpe. Also, the new code was unreachable.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
tools/python/xen/util/xpopen.py

index 66c2d9a5d892bec9c6e2eeb514c7106de35fd7d8..75aa08e678f316fabfe3966c27d68103ed548ba4 100644 (file)
@@ -104,7 +104,7 @@ class xPopen3:
             os.dup2(c2pwrite, 1)
             if capturestderr:
                 os.dup2(errin, 2)
-            self._run_child(cmd)
+            self._run_child(cmd, env)
         os.close(p2cread)
         self.tochild = os.fdopen(p2cwrite, 'w', bufsize)
         os.close(c2pwrite)
@@ -116,7 +116,7 @@ class xPopen3:
             self.childerr = None
         _active.append(self)
 
-    def _run_child(self, cmd):
+    def _run_child(self, cmd, env):
         if isinstance(cmd, basestring):
             cmd = ['/bin/sh', '-c', cmd]
         for i in range(3, MAXFD):
@@ -127,7 +127,6 @@ class xPopen3:
             except OSError:
                 pass
         try:
-            os.execvp(cmd[0], cmd)
             if env is None:
                 os.execvp(cmd[0], cmd)
             else: